地图显示事件监听 Sample详情
最后更新时间:2019年7月5日
当对地图进行移动、缩放、旋转等操作时,地图视图不断在刷新、变化,并且能够监听到种种变化,如:级别变化、旋转角度变化、中心点变化、位置变化、地图刷新、动画操作。MapView地图视图控件提供了对应的监听器来捕捉事件,并在回调方法中提供变化前后的数值。
重要说明:这几种监听事件提供的回调函数都是在子线程中响应的,获取其中信息后如果需要操作UI界面,则需回到主线程操作。
这些地图变化的监听都由MapViewDelegate地图控件代理协议提供,在使用之前,需使ViewController遵守协议,然后为MGSMapView对象设置协议,最后实现其回调函数,核心代码如下:
@interface ShowListen_ViewController ()<MapViewDelegate>
_mapView.delegate = self;
监听地图缩放级别的变化情况,可获取变化前后的地图分辨率。
-(void)zoomChangedWithMapView:(MGSMapView*) mapView oldResolution:(double) oldResolution newResolution:(double) newResolution; { //可以获取地图级别发生变化前后的分辨率 }
监听地图旋转角度的变化情况,可获取旋转前后的角度值。
-(void)rotateChangedWithMapView:(MGSMapView*) mapView oldAngle:(float) oldAngle newAngle:(float) newAngle { //获取地图旋转角度发生变化前后的角度值 }
监听地图视图中心点的变化情况,获取变化前后的地图视图中心点坐标。
-(void)centerChangedWithMapView:(MGSMapView*) mapView oldCenter:(MGSDot) oldCenter newCenter:(MGSDot) newCenter { //可以获取地图视图中心点发生变化前后的地图坐标点 }
监听地图位置的变化情况,可获取变化前后的地图位置MGSMapPosition信息,具体包括:中心点、分辨率、旋转中心、旋转角、倾斜角信息。
-(void)positionChangeWithMapView:(MGSMapView*) mapView oldMapPosition:(MGSMapPosition*) oldMapPosition newMapPosition:(MGSMapPosition*) newMapPosition { //获取地图变化的前后位置 }
监听地图刷新的事件,可判断地图刷新开始、完成的时间节点。
//地图开始刷新 -(void)willStartRefreshWithMapView:(MGSMapView *)mapView { //地图将要刷新 } //地图刷新完成 -(void)didFinishRefreshWithMapView:(MGSMapView *)mapView { //地图刷新完成 }
监听地图的动画操作,可判断动画开始、结束的时间节点。
//动画开始事件监听 -(void)animationStartWithMapView:(MGSMapView*) mapView animationType:(AnimationType) animationType { //动画开始,并且可以获取到动画的类型 } //动画结束事件监听 -(void)animationFinishWithMapView:(MGSMapView*) mapView animationType:(AnimationType) animationType isNormalFinish:(BOOL) isNormalFinish { //动画结束 }
地图动画类型包括: